package com.mhxy.service.impl;

import com.mhxy.constant.PicConstants;
import com.mhxy.enums.Coord;
import com.mhxy.service.AbstractTask;
import com.mhxy.util.FuzzyPicUtil;
import com.mhxy.util.MouseUtil;
import com.mhxy.util.ThreadUtil;
import com.sun.jna.platform.win32.WinDef;
import lombok.extern.slf4j.Slf4j;

/**
 * 使用宝图
 */
@Slf4j
public class MapUseTaskImpl extends AbstractTask {

    public MapUseTaskImpl(WinDef.HWND hwnd_0) {
        super(hwnd_0);
    }

    @Override
    public String getTaskName() throws Exception {
        return "使用宝图";
    }

    @Override
    public Boolean before() throws Exception {
        clickEsc3();
        if (FuzzyPicUtil.findPic(hwnd_0, PicConstants.公共_包裹, 3).isFinded()) {
            return true;
        }
        return goToJianYe();
    }

    @Override
    public Boolean execute() throws Exception {
        // 打开包裹 并打开宝图
        if (!openPackageUseMap()) {
            log.info("【{}】没有宝图了！", getTaskName());
            return true;
        }

        return true;
    }

    @Override
    public Boolean after() throws Exception {
        // 打开包裹 并打开宝图
        openPackageUseMap();
        clickEsc3();
        return true;
    }

    private boolean openPackageUseMap() throws Exception {
        // 查找“包裹”并点击
        if (!FuzzyPicUtil.findAndClickRandom(hwnd_0, PicConstants.公共_包裹, 3)) {
            log.error("没有找到“包裹”！");
            return false;
        }
        // 整理包裹
        FuzzyPicUtil.findAndClickRandom(hwnd_0, PicConstants.公共_整理, 3);
        // 将屏幕拉到最上方,查找藏宝图
        MouseUtil.dragMove(hwnd_0, Coord.PACKAGE_WHELL.getX(), Coord.PACKAGE_WHELL.getY(), 0, 1000);

        for (int i = 0; i < 6; i++) {
            if (FuzzyPicUtil.findAndClickRandom(hwnd_0, PicConstants.使用宝图_宝图, 3)) {
                break;
            }
            // 如果没找到下拉滑动屏幕寻找图标
            MouseUtil.dragMove(hwnd_0, Coord.PACKAGE_WHELL.getX(), Coord.PACKAGE_WHELL.getY(), 0, -100);
            if (i == 4) {
                log.info("【使用宝图任务】未找到宝图，任务完成");
                return false;
            }
        }

        // 点击使用
        if (!FuzzyPicUtil.findAndClickRandom(hwnd_0, PicConstants.使用宝图_使用1, 0)) {
            return false;
        }

        int fTimes = 0;
        while (true) {
            //使用宝图_使用2
            boolean isFind = FuzzyPicUtil.findAndClickRandom(hwnd_0, PicConstants.使用宝图_使用2, 0);
            if (!isFind) {
                fTimes ++;
                if(fTimes > 10) {
                    break;
                }
            }
            // 等待十秒
            ThreadUtil.sleep(1500);
        }

        //递归挖图任务
        return openPackageUseMap();

    }

    private boolean useMap() throws Exception {
        for (int i = 0; i < 5; i++) {
            ThreadUtil.sleep(3000);
            if (FuzzyPicUtil.findAndClickRandom(hwnd_0, PicConstants.使用宝图_使用1, 1)) {
                return true;
            }
        }
        return false;
    }
}
